Commercial software products frequently require some type of digital license “key” that enables the use of the product under certain conditions. The key itself is an arbitrary digital artifact that broadly reflects the terms and conditions under which a given customer may legitimately use the accompanying product. The actual policy represented by the license varies, but commonly may include items such as: specific identification of the computers where the software is eligible for execution, such as network host name or address, an internal serial number such as that used by network hardware (the so-called MAC address), a CPU serial number or hard disk serial number or combinations of all of the above; restrictions on use of the software, such as the maximum number of users that can be accommodated, expiration dates and so on; identification of the customer or user of the software; other policy items, for instance, whether the software can be executed on other computers of the same type, or only on the named computer; digital signatures and other data as needed to protect licenses from alteration.
In large computer networks, maintaining these licenses across the computer's lifecycle can be a difficult and error prone manual process. Licenses must be requested from the vendor, installed on the correct computers and monitored for errors such as impending license expiration. At large scale, thousands or tens of thousands of computer, the management problems associated with administering software licenses escalate enormously due to the workload and degree of manual effort required. Accordingly, an improved way to manage licenses is desirable that address many of these shortcomings.